# -*- coding: utf-8 -*-

"""1137. 第 N 个泰波那契数
泰波那契序列 Tn 定义如下： 
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n，请返回第 n 个泰波那契数 Tn 的值。

示例 1：
输入：n = 4
输出：4
解释：
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2：
输入：n = 25
输出：1389537

提示：
0 <= n <= 37
答案保证是一个 32 位整数，即 answer <= 2^31 - 1。"""

class Solution:
    """同斐波拉契序列一样，递归运算转换为状态递推"""
    def tribonacci(self, n: int) -> int:
        if n < 3:
            return (0, 1, 1)[n]
        
        no1, no2, no3, no4 = 0, 1, 1, 2

        i = 3
        while i <= n:
            no4 = no3 + no2 + no1
            no1, no2, no3 = no2, no3, no4
            i += 1

        return no4

if __name__ == '__main__':
    print(Solution().tribonacci(25))
